home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 526-550 / disk_527 / toolmanager / source / toolmanager.h < prev   
C/C++ Source or Header  |  1992-05-06  |  6KB  |  157 lines

  1. /*
  2.  * ToolManager.h   V1.4
  3.  *
  4.  * main include file
  5.  *
  6.  * (c) 1991 by Stefan Becker
  7.  *
  8.  */
  9. #include <exec/types.h>
  10. #define abs
  11. #include <stdlib.h>
  12. #include <stdio.h>
  13. #include <string.h>
  14. #include <ctype.h>
  15. #include <exec/libraries.h>
  16. #include <exec/memory.h>
  17. #include <dos/dostags.h>
  18. #include <intuition/gadgetclass.h>
  19. #include <libraries/iffparse.h>
  20. #include <workbench/icon.h>
  21. #include <workbench/startup.h>
  22.  
  23. /* Prototypes for system functions */
  24. #include <clib/alib_protos.h>
  25. #include <clib/asl_protos.h>
  26. #include <clib/commodities_protos.h>
  27. #include <clib/dos_protos.h>
  28. #include <clib/exec_protos.h>
  29. #include <clib/gadtools_protos.h>
  30. #include <clib/graphics_protos.h>
  31. #include <clib/icon_protos.h>
  32. #include <clib/iffparse_protos.h>
  33. #include <clib/intuition_protos.h>
  34. #include <clib/wb_protos.h>
  35. #undef HotKey /* Needed for -mRR */
  36. __stkargs CxObj *HotKey(UBYTE *, struct MsgPort *, long);
  37.  
  38. /* Version number & dates */
  39. #define TM_VERSION "1.4"
  40. #define TM_CRYEAR "1991"
  41. #define TM_DATE "09.07.1991"
  42.  
  43. /* Buffer lenghts */
  44. #define BUFLEN  100 /* Buffer length for one config line */
  45. #define NAMELEN 256 /* Buffer length for a file name */
  46.  
  47. /* Data for one config file entry */
  48. struct ConfigBlock {
  49.                     UBYTE cb_Type;                /* Type of tool (s. below) */
  50.                     UBYTE cb_Flags;               /* Flags (see below) */
  51.                     ULONG cb_Stack;               /* Stack size */
  52.                     ULONG cb_IconX;               /* Icon X Position */
  53.                     ULONG cb_IconY;               /* Icon Y Position */
  54.                     char  cb_Alias[BUFLEN];       /* Alias name */
  55.                     char  cb_RealName[BUFLEN];    /* Real name */
  56.                     char  cb_WorkDir[BUFLEN];     /* Current directory */
  57.                     char  cb_HotKey[BUFLEN];      /* HotKey description */
  58.                     char  cb_IconFile[BUFLEN];    /* Icon file name */
  59.                     char  cb_TempLine[BUFLEN+20]; /* temporary line */
  60.                    };
  61.  
  62. /* Entry for tool list */
  63. struct ToolNode {
  64.                  struct Node         tn_Node;     /* Node, contains name */
  65.                  UBYTE               tn_Type;     /* Type of tool (s. below) */
  66.                  UBYTE               tn_Flags;    /* Flags (see below) */
  67.                  char               *tn_RealName; /* Real name of tool */
  68.                  char               *tn_WorkDir;  /* Name of current dir. */
  69.                  BPTR                tn_DirLock;  /* Directory lock */
  70.                  ULONG               tn_Stack;    /* Stack size */
  71.                  struct AppMenuItem *tn_MenuItem; /* Pointer to WB menu item */
  72.                  char               *tn_IconFile; /* Name of icon file */
  73.                  struct DiskObject  *tn_Icon;     /* Pointer to icon data */
  74.                  struct AppIcon     *tn_AppIcon;  /* Pointer to WB icon */
  75.                  char               *tn_HotKey;   /* HotKey description */
  76.                  CxObj              *tn_CxObj;    /* HotKey's CX Object */
  77.                 };
  78.  
  79. /* Constants for tn_Type */
  80. #define TNTYPE_DUMMY 0  /* Non-functional dummy tool */
  81. #define TNTYPE_CLI   1  /* CLI tool */
  82. #define TNTYPE_WB    2  /* WB tool */
  83.  
  84. /* Flags for tn_Flags */
  85. #define TNFLAGS_MENU 0x01 /* Tool has a WB menu item */
  86. #define TNFLAGS_ICON 0x02 /* Tool has a WB icon */
  87. #define TNFLAGS_DOBJ 0x04 /* The icon is a DiskObject */
  88. #define TNFLAGS_NARG 0x08 /* Start tool with NO paramters */
  89.  
  90. /* Prototypes for library functions */
  91. void NewList(struct List *);
  92. struct ToolNode *GetHead(struct List *);
  93. struct ToolNode *GetSucc(struct ToolNode *);
  94.  
  95. /* Prototypes for program functions */
  96. /* config.c */
  97. void SetConfigFileName(char *);
  98. void InitConfigBlock(struct ConfigBlock *);
  99. void ReadConfigFile(void);
  100. void WriteConfigFile(struct Window *w);
  101. /* editwindow.c */
  102. void OpenEditWindow(ULONG, ULONG, ULONG, struct ToolNode *);
  103. void CloseEditWindow(void);
  104. void HandleEditWinEvent(void);
  105. /* ifficon.c */
  106. struct DiskObject *LoadIFFIcon(char *);
  107. void FreeIFFIcon(struct DiskObject *);
  108. /* mainloop.c */
  109. void SetQuitFlag(void);
  110. void mainloop(void);
  111. /* starttools.c */
  112. void StartTool(struct ToolNode *, struct AppMessage *);
  113. /* toollist.c */
  114. BOOL WBAddToolNode(struct WBArg *, int);
  115. BOOL AddToolNode(struct ConfigBlock *,BPTR);
  116. void RemToolNode(struct ToolNode *tn);
  117. void RemoveTools(void);
  118. /* toolmanager.c */
  119. void cleanup(int);
  120. /* statuswindow.c */
  121. void OpenStatusWindow(void);
  122. void CloseStatusWindow(void);
  123. void HandleStatWinEvent(void);
  124. void RefreshStatusWindow(void);
  125. void AttachToolList(void);
  126. void DetachToolList(void);
  127.  
  128. /* Global variables */
  129. extern struct MsgPort *MyMP;
  130. extern BPTR StartupCD;
  131. extern BOOL ShowQuitReq;
  132. extern BOOL running;
  133. extern struct List ToolList;
  134. extern UWORD ToolCount;
  135. extern ULONG wbactive;
  136. extern char MyName[];
  137. extern UBYTE CopyrightNote[];
  138. extern struct DiskObject *MyIcon;
  139. extern LONG IconXPos,IconYPos;
  140. extern BOOL ShowIcon;
  141. extern struct AppIcon *MyAppIcon;
  142. extern struct AppMenuItem *OTWAppMenuItem;
  143. extern BOOL ShowStatusWindow;
  144. extern ULONG statwinsig;
  145. extern ULONG editwinsig;
  146. extern struct MsgPort *MyBrokerPort;
  147. extern struct Broker *MyBroker;
  148. extern char DefaultPopUpHotKey[];
  149. extern char *PopUpHotKey;
  150.  
  151. /* Global defines */
  152. #define STACKMIN       4096                   /* default stack */
  153. #define DEFPROGNAME    "ToolManager"          /* default program name */
  154. #define DEFCONFIGNAME  "S:ToolManager.config" /* default config file name */
  155. #define DEFPOPUPHOTKEY "rcommand help"        /* default pop up hot key */
  156. #define WDRAGBARLEN 60 /* Width of Close & Drag gadget */
  157.